Hazelcast এবং Apache Kafka দুটি শক্তিশালী ডিস্ট্রিবিউটেড প্রযুক্তি, যা একসাথে কাজ করে ডিস্ট্রিবিউটেড ডেটা স্টোরেজ এবং মেসেজিং সিস্টেমের পারফরম্যান্স ও স্কেলেবিলিটি উন্নত করতে সহায়ক। Hazelcast ইন-মেমরি ডেটা গ্রিড হিসেবে কাজ করে, যেখানে ডেটা দ্রুত অ্যাক্সেস এবং প্রোসেসিংয়ের জন্য মেমরিতে সংরক্ষণ করা হয়, এবং Kafka একটি ডিস্ট্রিবিউটেড স্ট্রিমিং প্ল্যাটফর্ম যা ইভেন্ট ড্রিভেন আর্কিটেকচারে মেসেজিং ও ডেটা স্ট্রিমিংকে সহজ করে।
Hazelcast এবং Kafka একসাথে ব্যবহৃত হলে, আপনি Hazelcast-এর ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারগুলির মাধ্যমে ডেটা প্রক্রিয়া করতে পারেন এবং Kafka-এর মাধ্যমে সেই ডেটা ইভেন্ট স্ট্রিমিং, মেসেজ পুশিং বা ডেটা শেয়ারিং করতে পারেন। এই ইন্টিগ্রেশনটি বিশেষত ডিস্ট্রিবিউটেড সিস্টেমে দ্রুত ডেটা প্রোসেসিং এবং স্কেলেবিলিটির জন্য উপযুক্ত।
Hazelcast এবং Kafka একসাথে ব্যবহৃত হতে পারে যেখানে ডিস্ট্রিবিউটেড ডেটা এবং মেসেজিং সিস্টেমের কার্যকারিতা একসাথে কাজ করে, যেমন:
Hazelcast এবং Kafka ইন্টিগ্রেট করতে কিছু পদক্ষেপ অনুসরণ করতে হবে, যেখানে Hazelcast ডেটা স্ট্রাকচার ব্যবহার করে ডেটা প্রক্রিয়াজাত করবে এবং Kafka তে ইভেন্ট বা মেসেজ পাঠাবে।
প্রথমে, আপনাকে Kafka এবং Hazelcast এর জন্য প্রয়োজনীয় লাইব্রেরি আপনার প্রকল্পে যোগ করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করুন।
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.0.0</version>
</dependency>
Kafka প্রোডিউসার হল সেই উপাদান যা Hazelcast থেকে ডেটা নিয়ে তা Kafka টপিকে পাঠায়। Kafka প্রোডিউসার তৈরি করতে হলে, Kafka কনফিগারেশনের মাধ্যমে প্রোডিউসার তৈরি করতে হবে।
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;
public class KafkaProducerExample {
private static final String TOPIC = "hazelcast-topic";
public static void main(String[] args) {
// Kafka প্রোডিউসার কনফিগারেশন
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
// Kafka প্রোডিউসার তৈরি
KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
// Hazelcast থেকে ডেটা নিয়ে Kafka টপিকে পাঠানো
producer.send(new ProducerRecord<>(TOPIC, "key1", "value1"));
producer.close();
}
}
Hazelcast ডেটা স্ট্রাকচার থেকে ডেটা নিয়ে Kafka প্রোডিউসার ব্যবহার করে Kafka টপিকে পাঠাতে হবে। এখানে একটি উদাহরণ দেওয়া হলো:
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;
public class HazelcastToKafka {
private static final String TOPIC = "hazelcast-topic";
public static void main(String[] args) {
// Hazelcast ইনস্ট্যান্স তৈরি
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IMap<String, String> map = hz.getMap("hazelcast-map");
// Kafka প্রোডিউসার কনফিগারেশন
Properties properties = new Properties();
properties.put("bootstrap.servers", "localhost:9092");
properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
// Hazelcast থেকে ডেটা নিন এবং Kafka তে পাঠান
map.put("key1", "value1");
String key = "key1";
String value = map.get(key);
// Kafka টপিকে ডেটা পাঠানো
producer.send(new ProducerRecord<>(TOPIC, key, value));
producer.close();
}
}
এখানে, Hazelcast থেকে ডেটা নিয়ে Kafka টপিকে পাঠানো হচ্ছে। আপনি IMap বা অন্যান্য ডেটা স্ট্রাকচার ব্যবহার করে Hazelcast থেকে ডেটা পেতে পারেন এবং Kafka টপিকের মাধ্যমে পাঠাতে পারেন।
Kafka কনসিউমার হল সেই উপাদান যা Kafka থেকে ডেটা গ্রহণ করে এবং সেটি প্রক্রিয়া করে।
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;
import java.util.Properties;
import java.util.Consumer;
public class KafkaConsumerExample {
private static final String TOPIC = "hazelcast-topic";
public static void main(String[] args) {
// Kafka কনসিউমার কনফিগারেশন
Properties properties = new Properties();
properties.put("bootstrap.servers", "localhost:9092");
properties.put("group.id", "hazelcast-consumer-group");
properties.put("key.deserializer", StringDeserializer.class.getName());
properties.put("value.deserializer", StringDeserializer.class.getName());
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties);
consumer.subscribe(Collections.singletonList(TOPIC));
// Kafka থেকে মেসেজ গ্রহণ
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000));
for (ConsumerRecord<String, String> record : records) {
System.out.println("Received: " + record.key() + " = " + record.value());
}
}
}
}
এখানে, Kafka কনসিউমার hazelcast-topic থেকে ডেটা পড়ে এবং সিস্টেমে প্রসেস করতে পারে।
Hazelcast এবং Kafka ইন্টিগ্রেশন দ্বারা আপনি ডিস্ট্রিবিউটেড ডেটা প্রসেসিং এবং স্ট্রিমিং সিস্টেম তৈরি করতে পারেন। Hazelcast ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের মাধ্যমে ডেটা দ্রুত প্রক্রিয়া করতে সাহায্য করে এবং Kafka সেই ডেটা স্ট্রিমিং এবং মেসেজিং এর মাধ্যমে সিস্টেমের মধ্যে পাঠাতে সক্ষম।
common.read_more